package com.spring.demo.publicutil.util;

import org.springframework.stereotype.Component;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @author youjc
 * @date 2021年11月26日 18:11
 * 使用反射将类中String字段去掉无效空格
 */
@Component
public class ReflectClassStringTrimUtil {
    /**
     * @Description: 将 类中的 类型为 String 的属性值中的,外边空格(包括制表符等其他)去掉
     * @Param: 要转换的类
     * @return: 转换完的类
     * @Author: wang yu
     * @date: 2018/10/25 1:00
     */
    public static void trimBean(Object model) throws Exception {
        //int a = 1/0;
        Class clazz = model.getClass();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            if (field.getGenericType().toString().equals("class java.lang.String")) {
                Method getMethod = clazz.getMethod("get" + getMethodName(field.getName()));
                String value = (String) getMethod.invoke(model);// 调用getter方法获取属性值
                if ((value != null) && (!"".equals(value))) {
                    //value = value.replaceAll("\\s*", "");
                    value = value.trim();
                    field.setAccessible(true);
                    field.set(model, value);
                }
            }
        }
    }


    /*
     * @Description: 把一个字符串的第一个字母大写
     */
    private static String getMethodName(String fildeName) {
        byte[] items = fildeName.getBytes();
        items[0] = (byte) ((char) items[0] - 'a' + 'A');
        return new String(items);
    }

}
